#include "Shm.hpp"
#include "Fifo.hpp"

int main()
{
    Shm shm(pathname, projid, CREATER);
    shm.Attr();
    NameFifo fifo(PATH, FIFENAME);
    
    FileOper readerfile(PATH, FIFENAME);
    readerfile.OpenForRead();

    char *mem = (char *)shm.VirtualAddr();
    // 读取用户端写入的数据，并打印显示器文件中
    while (true)
    {
        // 默认阻塞模式：当没有数据可读时，read()调用会阻塞，直到：1.有数据写入 2.写入端关闭管道 3.被信号中断
        // 这是Linux系统对FIFO的默认行为，确保读取进程能等待到数据。
        if (readerfile.Wait()) // 默认会阻塞
        {
            printf("%s\n", mem);
            //sleep(1);
        }
        else
        {
            break;
        }
    }

    readerfile.Close();
    return 0;
}